﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Touchscreen
{
    public partial class Stap1 : System.Web.UI.Page
    {
        private List<Movie> upcomingMovies = new List<Movie>();
        private List<Movie> nextMovies = new List<Movie>();

        protected void Page_Load(object sender, EventArgs e)
        {
            addUpcomingMovies();
            addNextMovies();

            if (!Page.IsPostBack)
            {
                showUpcomingMovies();
            }      
        }

        //Eerste vijf films weergeven
        private void showUpcomingMovies()
        {
            ButtonFilmLater.Visible = true;
            ButtonFilmNow.Visible = false;

            foreach (var m in nextMovies)
            {
                m.Visible = false;
            }

            foreach (var m in upcomingMovies)
            {
                m.Visible = true;
            }
        }

        //Films later op de dag, volgende vijf.
        private void showNextMovies()
        {
            ButtonFilmLater.Visible = false;
            ButtonFilmNow.Visible = true;

            foreach (var m in nextMovies)
            {
                m.Visible = true;
            }

            foreach (var m in upcomingMovies)
            {
                m.Visible = false;
            }
        }

        //Methode die gebruikt wordt om de eerste vijf films per stuk mee op te bouwen
        private void addUpcomingMovies()
        {
            for (int zaalnummer = 1; zaalnummer < 6; zaalnummer++)
            {
                var voorstellingen = (from v in Module.database.Voorstellings
                                      where v.datumtijd > DateTime.Now && v.zaal_nummer == zaalnummer
                                      orderby v.datumtijd ascending
                                      select v).Take(1);

                if (voorstellingen.Count() > 0)
                {
                    upcomingMovies.Add(addMovie(voorstellingen.First()));
                }
            } 
        }

        //Methode die gebruikt wordt om de latere vijf films per stuk mee op te bouwen
        private void addNextMovies()
        {
            for (int zaalnummer = 1; zaalnummer < 6; zaalnummer++)
            {
                var voorstellingen = (from v in Module.database.Voorstellings
                                      where v.datumtijd > DateTime.Now && v.zaal_nummer == zaalnummer
                                      orderby v.datumtijd ascending
                                      select v).Skip(1).Take(1);

                if (voorstellingen.Count() > 0)
                {
                    nextMovies.Add(addMovie(voorstellingen.First()));
                }
            }
        }

        private Movie addMovie(Voorstelling voorstelling)
        {
            Movie movie = (Movie)LoadControl("Movie.ascx");
            movie.voorstelling = voorstelling;
            Panel.Controls.Add(movie);
            return movie;
        }

        protected void FilmLater_Click(object sender, EventArgs e)
        {
            showNextMovies();
        }

        protected void FilmNow_Click(object sender, EventArgs e)
        {
            showUpcomingMovies();
        }
    }
}